package cn.pegasus.teamwork.sysconfig.service;

import java.util.Map;

import com.aliyuncs.exceptions.ClientException;

import cn.iyizhan.teamwork.base.service.BaseService;
import cn.iyizhan.teamwork.base.util.PageObject;
import cn.pegasus.teamwork.sysconfig.entity.SysConfigSms;
import cn.pegasus.teamwork.sysconfig.mapper.SysConfigSmsMapper;

/**
 * @author sine
 * @version
 */
public interface SysConfigSmsService extends BaseService<SysConfigSms, SysConfigSmsMapper> {

	/**
	 * 获取验证码
	 *
	 * @param phone
	 *            手机号码
	 * @param userId
	 *            用户id
	 * @param type
	 *            类型 (1-验证码；2-订单通知；3-服务结果通知)
	 * @return 1:异常 0:成功 ;2-时间不到，请勿重新发送
	 */
	public int createCode(Long phone, Long userId, int type);
	
    /**
     * 洗车工开始服务短信通知
     * @param phoneNumber
     * @param carCode
     * @return
     * @throws ClientException
     */
    public boolean sendBeginServiceNotice(String phoneNumber,String name,String orderCode,String orderTime);
    
    /**
     * 洗车工提交押金后系统管理员审核后，洗车工收取的短信通知
     * @param phoneNumber
     * @param carCode
     * @return
     * @throws ClientException
     */
    public boolean sendWasherRegYJSHNotice(String phoneNumber);
    
    /**
     * 洗车工提交资料后系统管理员审核后，洗车工收取的短信通知
     * @param phoneNumber
     * @param carCode
     * @return
     * @throws ClientException
     */
    public boolean sendWasherRegSHNotice(String phoneNumber,int type);
    
    /**
     * 洗车工提交资料后收取的短信通知
     * @param phoneNumber
     * @param carCode
     * @return
     * @throws ClientException
     */
    public boolean sendWasherRegNotice(String phoneNumber) ;
	
    /**
     * 服务结束后通知用户洗车已经完成
     * @param phoneNumber
     * @param carCode
     * @return
     * @throws ClientException
     */
	public boolean sendSerNotice(String phoneNumber,String carCode);
	
    /**
     * 分派订单成功之后通知洗车工
     * @param phoneNumber
     * @param name
     * @param orderCode
     * @param orderTime
     * @return
     * @throws ClientException
     */
    public boolean sendOrdNotice(String phoneNumber,String name,String orderCode,String orderTime);
    
    /**
     * 分派订单成功之后通知洗车工
     * @param phoneNumber
     * @param name
     * @param orderCode
     * @param orderTime
     * @return
     * @throws ClientException
     */
    public boolean refundsOrdNotice(String phoneNumber,String name,String orderCode,String orderTime);

	/**
	 * 
	 * @author buyuer
	 * @Title: checkSms
	 * @Description: 从数据库查询验证码
	 * @param phone
	 *            手机号码
	 * @param userId
	 *            用户id
	 * @param type
	 *            类型
	 * @param code
	 *            验证码
	 * @return
	 */
	public boolean checkSms(Long phone, Long userId, int type, String code);

	/**
	 * @Title: getPageSysConfigSms @Description: 分页获取手机验证码信息 @param
	 * map @return @throws Exception 设定文件 @return PageObject<SysConfigSms>
	 * 返回类型 @date 2016年5月24日 下午2:26:44 @throws
	 */
	public PageObject<SysConfigSms> getPageSysConfigSms(Map<String, Object> map) throws Exception;

}
